1. Technical Field
The present invention relates in general to an improved method and apparatus for transferring data, and in particular to an improved method and apparatus for transferring data between system memory and non-system memory in a data processing system. Still more particularly, the present invention relates to an improved method and apparatus for transferring data between system memory and non-system memory in a manner which frees the host microprocessor for other tasks in the data processing system.
2. Description of the Related Art
In data processing systems, more advanced graphics adapters for controlling video displays have been introduced in which a microprocessor has been placed on the graphics adapter to control the display on a video terminal. For example, the Extended Graphics Adapter ("XGA adapter") is a high resolution graphics adapter with Micro-Channel direct memory access ("DMA") busmaster capability. Both the XGA adapter and the Micro Channel are products of International Business Machines Corporation. XGA is a trademark of International Business Machine Corporation, and Micro Channel is a registered trademark of International Business Machine Corporation.
Busmaster capability is the capability of an adapter or peripheral device to process tasks and access memory anywhere in the system address space, independently of the host microprocessor. In other words, the XGA adapter is able to process tasks and access memory anywhere in system address space independently of the data processing system's host microprocessor. In addition, this capability also includes the ability to access memory located on the adapter. Busmaster capability is provided utilizing a microprocessor provided in the XGA adapter. The microprocessor provided in such an adapter, however, is typically less powerful than the host microprocessor in a data processing system.
An XGA Virtual Device Driver ("VDD") is a component of the operating system whose purpose includes granting input/output ("I/O") privileges, saving/restoring video states, and providing a video bitmap for XGA applications executing in Virtual Dos Machines ("VDM"). Two of the principal functions of the XGA VDD are (1) saving the contents of the Video Random Access Memory ("VRAM") located in the XGA when a foreground XGA VDM session switches to the background and (2) restoring the VRAM data when a background XGA VDM session switches to the foreground.
Presently, when a foreground XGA VDM session is switched to the background and a background XGA VDM session is switched to the foreground, the microprocessor present in a video peripheral adapter sends a portion of the video data from VRAM to the bus and signals the host microprocessor that video data is present. The host microprocessor then saves the video data to system memory. When the host microprocessor finishes retrieving the video data from the bus, the XGA microprocessor places more video data on the bus for the host microprocessor to retrieve. This process continues until all the video data for the XGA VDM foreground session has been saved to system memory.
Thereafter, video data for the XGA VDM background session is retrieved from the system memory by the host microprocessor and sent across the bus to the XGA microprocessor, following a process in which data is placed on the bus by the host microprocessor and the XGA microprocessor is directed to retrieve the data in order to display the screen that was saved as a XGA VDM background session. The XGA microprocessor then retrieves the video data from the bus. This data transfer process continues until all of the XGA VDM background session video data has been retrieved from the system memory and placed into VRAM.
During this data transfer process in known systems, a first microprocessor must wait for the second microprocessor to finish placing data on the bus or retrieving data from the bus before the first microprocessor can place or retrieve data. Additionally, accessing the bus takes time. It would therefore be desirable to provide a method and apparatus which permits increased speed and efficiency in transferring data between system memory and non-system memory, in order to free up a host microprocessor to perform other tasks.